The invention relates generally to computer systems or networks, and more particularly to an improved system and method for monitoring computer system information.
Network administrators run management applications to perform such tasks as detect machines on a network, inventory software and hardware configurations, and send key information back to a central database. Such management applications receive this information from a variety of disparate sources.
By way of example, typical sources for management information include databases and the underlying system. For example, a database may be queried by a management application, or a system call may be made to determine the state of some device, e.g., the free space of a disk. Alternatively, some management applications interface directly with instrumentation that can pull information from device drivers or other software components. For example, a management application may communicate with remote disk drive software to determine how much free space remains on a network drive. As can be readily appreciated, the wide variety of management applications and resources, protocols, formats, frameworks, and so on made it difficult and complicated for management applications and the users thereof to obtain the desired information.
A significant improvement for accessing and returning management information is described in U.S. patent application Ser. No. 09/020,146, still pending wherein a common information model object manager (the CIMOM) is provided to isolate management applications from the various sources of management information, while providing a single, uniform way to access the information. With the CIMOM, each management application submits queries to the CIMOM in a uniform way. The CIMOM then communicates with one or more sources of the information, known as providers, to return an appropriate reply. The CIMOM is intelligent in that it can decompose queries into requests from multiple providers and synthesize the results into a single response, filter excess information, work with the capabilities of the providers, and so forth.
While the CIMOM thus provides significant benefits in accessing management applications, the CIMOM was not intended for handling high-speed and/or highly frequent queries. As a result, the CIMOM was not designed for performance monitoring. As is known, performance monitoring enables a system user (administrator) to analyze fast changing system operations, e.g., on the order of thousands of measurements per second, such as packets per second over a network, hard disk I/O operations per second, CPU utilization, or page faults per second. Performance counters are presently used to provide a graphical representation of those operations that updates at a user-selectable rate, e.g., once a second, every two seconds and so on.
However, client calls to the CIMOM cross a process boundary, resulting in thread context switching and other delays that significantly influence performance counters and measurements. Indeed, the frequent calls to the CIMOM were determined to account for a significant percentage of the performance measurements. As a result, even though the CIMOM is capable of communicating with the information providers that provide the information desired in performance monitoring, the CIMOM has heretofore been unable to adequately perform performance monitoring.
Briefly, the present invention provides a method and architecture that enables performance monitoring while using a centralized information source model such as CIM. To accomplish this, in general, when a client (e.g., a management application) requests performance measurements from high-performance providers, the CIMOM loads the appropriate providers of the information into the client process space. As a result, performance monitoring does not cross a process boundary, and thus does not significantly impact the monitoring measurements. More particularly, when a client process requests information through a proxy and the CIMOM, the CIMOM accesses the appropriate provider or providers, and returns an object to the client process containing the requested information. If the client places the object into a refresher (included in the same component, e.g., code, as the proxy), this signals that the client process wants performance monitoring. If the provider of the object information is a high-performance provider, the proxy requests the CIMOM to load an instance that (high-performance) provider into the client process space. A refresh application programming interface (API) call to the proxy is made available to the client, and when this call is received, the proxy knows to instruct the objects in the refresher to update themselves via the providers loaded in the client process space, rather than contact the CIMOM for the requested information.
Other aspects of the present invention include the ability to have objects for multiple providers in a refresher, whereby a client can obtain multiple performance measurements via a single API call, for example, once every one second. There can be multiple refreshers in the client process space, so that, for example, a client can refresh monitoring information at different rates. Also, refreshers may be loaded within other refreshers, providing additional flexibility and ease of use to a client.
The method and architecture of the present invention further enable remote high performance monitoring over a network, wherein a client may include local, remote or a mix of local and remote objects into a refresher. Remote providers are contacted through the CIMOM, even if those remote providers are high-performance providers. Another aspect of the present invention involves the use of shared memory techniques to overcome problems of crossing a process boundary for obtaining information. For example, separate processes (e.g., SQL server) that perform their own performance measurements (e.g., via performance counters) can be efficiently used for high-performance monitoring through shared memory techniques.